In computers that handle a large volume of data, data input/output performance has a significant influence on the time required to complete data processing.
With respect to data writing to a storage device, such as a hard disk, in a computer, the performance of writing data to a small number of continuous large areas is typically higher than the performance of writing data to a large number of small areas. For example, when data is input to or output from each area of a hard disk drive or an optical disc, a storage medium should be rotated up to the position of the header. Thus, it takes time to wait for the completion of the rotation. Therefore, writing data to a large number of small areas requires a larger number of times to wait for the completion of the rotation, which results in an increased total input/output time. Even on a medium that includes no physically driven components, such as flash memory, inputting and outputting data to/from a large number of small areas requires more pieces of management information for the input/output, and thus takes more time than inputting and outputting data to/from a small number of large areas.
A file system typically stores a large number of directories and files whose information are related to one another. Therefore, when some file is changed, directory information and metadata related to the file should also be changed. In a typical file system, such related information is stored at a distant location on a storage medium. Therefore, when data is updated, it is necessary to input and output data to/from a large number of small areas. Thus, high performance is difficult to maintain.
In order to solve such inconvenience, a file system called LFS (Log-Structured File system) has been proposed (see Non Patent Literature 1), and a file system that is based on the idea of LFS has been put into practical use. A LFS can restrict data input/output to occur in a small number of large areas on a storage medium by writing update information on the file system to the storage medium in a log-like manner. Meanwhile, since post-update data is stored at a different position from the data storage position of pre-update data, the data region for the pre-update data becomes unnecessary and thus will not be referenced.
As a method for managing the capacities of storage mediums, there is known a method called “thin-provisioning” that divides a plurality of storage mediums as a set of fixed-length or variable-length chunks, and combines such chunks to provide a virtual capacity (i.e., virtual volume) (see Patent Literature 1). In this method, association with a chunk of a storage medium (i.e., allocation of an available capacity) is delayed until when an input/output request is issued to each area on a virtual volume, whereby a virtual volume with a higher capacity than the total capacity of the actual storage mediums can be constructed. Accordingly, it is possible to perform an operation of starting a computer system with a small number of storage mediums and adding a storage medium(s) thereto at a later date.